Twig Tweak模块
我们在做Drupal项目的时候,特别时Drupal8版本以上的项目,我们经常使用Twig Tweak模块。这个模块小巧玲珑,方便易用。
模块地址:https://www.drupal.org/project/twig_tweak
它为Drupal核心的Twig模板,增加了扩展函数,方便可以在twig模板文件中嵌入区块、视图,等等。
在模板中嵌入区块:
{{ drupal_block('plugin_id') }}
{{ drupal_entity('block', 'block_id', check_access=false) }}
Drupal版本:
让Drupal兼容持久性应用服务器( ReactPHP, PHP-PM,Swoole)
我们知道,Drupal是一个PHP版本的CMS系统,这个系统开始涉及,就是面向HTTP 请求的,底层逻辑就是一个请求,启动一次引导指令,请求结束后,进程结束。这种模式比较简单。
随着技术的进步,其它语言,都可以实现程序启动后,处理多个请求,比如Java,Nodejs,这种模式的优点是性能卓越。PHP里面也有类似的框架,比如Swoole,这个国产的框架,底层C++;以及 ReactPHP, PHP-PM等等,都可以实现启动后,处理多个请求。
受限于Drupal历史代码的负担,让Drupal兼容持久性应用服务器并不是一件容易的事情,Drupal社区有部分人士,多次呼吁,讨论的也很激烈,这里有一个专门的讨论帖子:
论坛:
Drupal版本:
Drupal AI模块
最近几年,自然语言大模型的快速落地应用发展迅猛,呈现百花齐放的局面。作为内容管理系统里面的领头羊,Drupal社区也推出了AI的集成模块。模块地址:
https://www.drupal.org/project/ai
这个模块提供了一个框架,用于在Drupal站点集成AI功能,支持多种AI供应商。这个模块包含一些列模块,并提供了一个基础的API,用来生成文本内容,图片、内容分析,等等。
它吸取了Search API, Open AI等Drupal模块的成功经验,他提供了一个统一的抽象层,方便集成OpenAI (ChatGPT, DALL-E), Anthropic (Claude), Fireworks, Mistral 这些商用大模块,也可以集成开源的大模型,Olama, LMStudio and Hugginface,支持本地化部署。
Experience builder模块更名为Drupal Canvas
近期2025年9月2日,Experience builder模块更名为Drupal Canvas,并发布了1.0.0-alpha1版本。更名的原因很简单,与别人的商标名称冲突了。
Canvas,前端web里面意思是画布,web特有的技术。Drupal Canvas模块使用到了web前端的画布功能,它的用途是让非技术人员,通过画布技术,拖拽的方式构建前端页面。易用性方面有了很大的提升。
如果说Panels模块,是面向Drupal程序员的,那么Drupal Canvas则是面向Drupal终端用户的,特别是内容管理人员。允许用户拖拽的内容,支持Drupal系统自带的区块、视图、等等,方便易用,并且内容可以复用。
Drupal Canvas除了Drupal端的代码以外,大量的使用React前端框架,整个预览的前端界面,都是基于React框架开发的,这是Drupal + React的一次非常好的实践。
论坛:
Drupal版本:
Drupal网站admin管理界面限制内部IP访问
部分单位出于安全的考虑,管理页面只让内网访问,特别是护网阶段。我们的Drupal站点,通常使用Nginx,这里介绍一下通过nginx的配置文件,实现这个功能
location /admin {
# 第一步:允许内网网段
allow 10.0.0.0/24;
论坛:
Drupal版本:
Nodejs 文本语种识别
我们帮助客户搭建了一个信息采集系统,采集器用的nodejs,服务器端用的是我们熟悉的Drupal。我们采集的信息由于是各种语种都有的,我们系统有将其统一成英文的需求,所以我们就调用了百度的翻译API,统一翻译成为英文。
用了一段时间发现,百度翻译的接口有点小贵,考虑到大部分的文章都是英文,只需要把不是英文的翻译成英文即可。此时我们需要识别这些文本的语种,做一个判断。
我查了一下,NodeJS下面,文本的语种识别,主要有3个库可用tinyld、languagedetect、franc,下面是地址,还有最近更新时间,下载量的对比。
https://www.npmjs.com/package/tinyld 2 years ago 2.2
论坛:
Drupal 9 升级Drupal10
现在Drupal11的正式版已经出来了,Drupal9也已经停止了维护,升级到Drupal10,是必然选择。最近尝试将10多个Drupal9站点,升级到Drupal10,总结一下经验:
1, 先升级到Drupal 9的最后一个版本,也就是Drupal9.5
2, 之后升级到Drupal10.0
3, 再后升级到Drupal10.2
全程做好备份,防止出错。注意模块的兼容性,首先先将模块升级,让它同时兼容Drupal9,Drupal10. 升级主题,也同时兼容Drupal9,Drupal10。自定义模块、主题,info文件修改:

